﻿using System;
using System.Drawing;

namespace HML
{
    /// <summary>
    /// SingleAccordion节点背景绘制后事件参数
    /// </summary>
    public class SingleAccordionNodeDrawAfterEventArgs : EventArgs
    {
        private readonly SingleAccordionNode node;
        /// <summary>
        /// 节点
        /// </summary>
        public SingleAccordionNode Node
        {
            get { return this.node; }
        }

        private readonly float dpi;
        /// <summary>
        /// 系统缩放比例
        /// </summary>
        public float Dpi
        {
            get { return this.dpi; }
        }

        private readonly Graphics graphics;
        /// <summary>
        /// 封装一个GDI+绘图图面 （ 当前 Clip=Bounds_C ）
        /// </summary>
        public Graphics Graphics
        {
            get { return this.graphics; }
        }

        private readonly int scrollY;
        /// <summary>
        /// 滚动条Y坐标
        /// </summary>
        public int ScrollY
        {
            get { return this.scrollY; }
        }

        private readonly Rectangle bounds_C;
        /// <summary>
        /// 节点区域（包含:内容）（不包含滚动条Y坐标）
        /// </summary>
        public Rectangle Bounds_C
        {
            get { return this.bounds_C; }
        }

        private readonly SolidBrush backBrush;
        /// <summary>
        /// 背景画笔
        /// </summary>
        public SolidBrush BackBrush
        {
            get { return this.backBrush; }
        }

        private readonly bool imageVisible;
        /// <summary>
        /// 是否显示图片
        /// </summary>
        public bool ImageVisible
        {
            get { return this.imageVisible; }
        }

        private readonly Rectangle imageBounds_C;
        /// <summary>
        /// 图片区域（包含:内容）
        /// </summary>
        public Rectangle ImageBounds_C
        {
            get { return this.imageBounds_C; }
        }

        private readonly Image image;
        /// <summary>
        /// 图片
        /// </summary>
        public Image Image
        {
            get { return this.image; }
        }

        private readonly Rectangle textBounds_C;
        /// <summary>
        /// 文本区域（包含:内容）
        /// </summary>
        public Rectangle TextBounds_C
        {
            get { return this.textBounds_C; }
        }

        private readonly SolidBrush textBrush;
        /// <summary>
        /// 文本画笔
        /// </summary>
        public SolidBrush TextBrush
        {
            get { return this.textBrush; }
        }

        private readonly bool foldVisible;
        /// <summary>
        /// 是否显示折叠图标
        /// </summary>
        public bool FoldVisible
        {
            get { return this.foldVisible; }
        }

        private readonly Rectangle foldBounds_C;
        /// <summary>
        /// 折叠图标区域（包含:内容）
        /// </summary>
        public Rectangle FoldBounds_C
        {
            get { return this.foldBounds_C; }
        }

        private readonly int foldAngle;
        /// <summary>
        /// 折叠图标旋转角度
        /// </summary>
        public int FoldAngle
        {
            get { return this.foldAngle; }
        }

        private readonly Pen foldPen;
        /// <summary>
        /// 折叠图标画笔
        /// </summary>
        public Pen FoldPen
        {
            get { return this.foldPen; }
        }

        private readonly bool splitterLineVisible;
        /// <summary>
        /// 是否显示分隔线
        /// </summary>
        public bool SplitterLineVisible
        {
            get { return this.splitterLineVisible; }
        }

        private readonly Rectangle splitterLineBounds_C;
        /// <summary>
        /// 分隔线区域（包含:内容）
        /// </summary>
        public Rectangle SplitterLineBounds_C
        {
            get { return this.splitterLineBounds_C; }
        }

        private readonly Pen splitterLinePen;
        /// <summary>
        /// 分隔线画笔
        /// </summary>
        public Pen SplitterLinePen
        {
            get { return this.splitterLinePen; }
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="node">节点</param>
        /// <param name="dpi">系统缩放比例</param>
        /// <param name="graphics">封装一个GDI+绘图图面 （ 当前 Clip=Bounds_C ）</param>
        /// <param name="scrollY">滚动条Y坐标</param>
        /// <param name="bounds_C">节点区域（只包含:内容）（不包含滚动条Y坐标）</param>
        /// <param name="backBrush">背景画笔</param>
        /// <param name="imageVisible">是否显示图片</param>
        /// <param name="imageBounds_C">图片区域（包含:内容）</param>
        /// <param name="image">图片</param>
        /// <param name="textBounds_C">文本区域（包含:内容）</param>
        /// <param name="textBrush">文本画笔</param>
        /// <param name="foldVisible">是否显示折叠图标</param>
        /// <param name="foldBounds_C">折叠图标区域（包含:内容）</param>
        /// <param name="foldAngle">折叠图标旋转角度</param>
        /// <param name="foldPen">折叠图标画笔</param>
        /// <param name="splitterLineVisible">是否显示分隔线</param>
        /// <param name="splitterLineBounds_C">分隔线区域（包含:内容）</param>
        /// <param name="splitterLinePen">分隔线画笔</param>
        public SingleAccordionNodeDrawAfterEventArgs(SingleAccordionNode node, float dpi, Graphics graphics, int scrollY, Rectangle bounds_C, SolidBrush backBrush, bool imageVisible, Rectangle imageBounds_C, Image image, Rectangle textBounds_C, SolidBrush textBrush, bool foldVisible, Rectangle foldBounds_C, int foldAngle, Pen foldPen, bool splitterLineVisible, Rectangle splitterLineBounds_C, Pen splitterLinePen)
        {
            this.node = node;
            this.dpi = dpi;
            this.graphics = graphics;
            this.scrollY = scrollY;
            this.bounds_C = bounds_C;
            this.backBrush = backBrush;
            this.imageVisible = imageVisible;
            this.imageBounds_C = imageBounds_C;
            this.image = image;
            this.textBounds_C = textBounds_C;
            this.textBrush = textBrush;
            this.foldVisible = foldVisible;
            this.foldBounds_C = foldBounds_C;
            this.foldAngle = foldAngle;
            this.foldPen = foldPen;
            this.splitterLineVisible = splitterLineVisible;
            this.splitterLineBounds_C = splitterLineBounds_C;
            this.splitterLinePen = splitterLinePen;
            this.backBrush = backBrush;
        }

    }

}
